package com.nkzy.bigevent.mapper;

import com.nkzy.bigevent.pojo.Article;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 文章数据访问层接口
 * 提供对 article 表的基本 CRUD 操作
 */
@Mapper
public interface ArticleMapper {

    /**
     * 根据ID查询文章
     * @param id 文章ID
     * @return 对应的文章对象，如果不存在则返回null
     */
    @Select("SELECT * FROM article WHERE id = #{id}")
    Article selectById(Integer id);

    /**
     * 查询所有文章
     * @return 包含所有文章的列表
     */
    @Select("SELECT * FROM article")
    List<Article> selectAll();

    /**
     * 插入新文章
     * @param article 要插入的文章对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO article(title, content, cover_img, state, category_id, create_user, create_time, update_time) " +
            "VALUES(#{title}, #{content}, #{coverImg}, #{state}, #{categoryId}, #{createUser}, #{createTime}, #{updateTime})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insert(Article article);

    /**
     * 更新文章信息
     * @param article 包含更新信息的文章对象
     * @return 影响的行数
     */
    @Update("UPDATE article SET title = #{title}, content = #{content}, cover_img = #{coverImg}, state = #{state}, " +
            "category_id = #{categoryId}, create_user = #{createUser}, update_time = #{updateTime} WHERE id = #{id}")
    int update(Article article);

    /**
     * 根据ID删除文章
     * @param id 要删除的文章ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM article WHERE id = #{id}")
    int deleteById(Integer id);
}